package com.firewolf.service;

import java.io.Serializable;
import java.util.Date;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.springframework.stereotype.Service;

@Service
public class UserService {
	public void testSession() {
		//获取Session，这个Session可以脱离HttpSession存在
		Session session = SecurityUtils.getSubject().getSession();
		
		//获取设置到Session里面的属性
		Object object = session.getAttribute("username");
		
		//获取Session ID
		Serializable id = session.getId();
		//获取主机地址
		String host = session.getHost();
		
		//获取会话的启动时间及最后访问时间
		//如果是JavaSE应用需要自己定期调用session.touch()去更新最后访问时间；
		//如果是Web应用，每次进入ShiroFilter都会自动调用session.touch()来更新最后访问时间。    
		Date startTime = session.getStartTimestamp();
		Date lastTime = session.getLastAccessTime();
		
		//获取/设置当前Session的过期时间；如果不设置默认是会话管理器的全局过期时间1800000
		long timeout = session.getTimeout();
		//session.setTimeout(1000*60*20);
		
		//设置以及删除属性
		session.setAttribute("attr", "value");
		session.removeAttribute("attr");
		
		//更新会话最后访问时间及销毁回话，当Subject.logout()时会自动调用stop方法来销毁会话。
		//如果在web中，调用javax.servlet.http.HttpSession. invalidate()也会自动
		//调用Shiro Session.stop方法进行销毁Shiro的会话
		session.touch();
		//session.stop();//可以使用这个方法强制用户退出登录
		
		
		System.out.println("Session Attribute:username--"+object);
		System.out.println("Session ID : "+id);
		System.out.println("Host : "+host);
		System.out.println("StartTime : "+startTime);
		System.out.println("LastTime : "+lastTime);
		System.out.println("Timeout : "+timeout);
	}
}
